Uppgradering av Ubuntu

Jag använder operativsystemet Ubuntu, vilket är en Linux-distribution. Linux är kärnan (kernel) i Ubuntu. Denna blog post handlar om när jag uppgraderade till Ubuntu 18.

Yak-shaving

Det finns ett engelskt uttryck bland utvecklare kallat "Yak-shaving" (raka en oxe). Denna Youtube-video visar hur det kan gå till.
Det påminner mycket om filmen Inception.

För ca fem veckor sedan skrev jag ner "Maybe upgrading to the new version of Ubuntu will fix it !?" På Svenska: "kanske prova att uppgradera till den nya versionen av Ubuntu".

Jag antecknar allt jag gör, så att jag kan fortsätta där jag var om jag blir avbruten eller kommer in på ett sido-spår. Det händer ofta att jag är flera nivåer ner, där jag måste fixa en grej, för att få en annan grej att fungera, etc ...

Jag höll på att skriva en guide om hur man kan göra en "survey" (engelska för undersöknings-enkät) med hjälp av min web-editor.
Men det fungerade inte att ladda upp filerna till Github.com (Github är en portal för publicering av källkod)

Jag undersökte felet, och kom fram till att hg-git hade slutat fungera. Hg-git gör det möjligt att använda versions-hanterings-programmet Mercurial för att ladda upp filer till lagrings-servrar gjorda för versions-hanterings-programmet Git. ¹ Dvs man kan ladda upp filer till Github, med Mercurial i stället för Git.

Efter att spenderat flera timmar att fixa problemet med hg-git var det enda jag kunde komma på var att uppgradera operativ-systemet ...

Smekmånaden är över

För ungefär år sedan började jag experimentera med UNIX-inspirerade operativ-system: Solaris, BSD, och Linux.
Jag ville först prova Solaris, men då jag inte lyckades installera det på min server, fick det bli Ubuntu (som fungerar på det mesta).

Jag verkligen älskar Linux då det är så mycket enklare att jobba med än Windows. Det känns som det bara gått någon månad sedan jag helt gick över till Linux, men det har nu gått flera år! Och jag kör Linux på både servrar och arbets-dator ²

Kärleken har dock avtagit något efter de senaste veckorna då jag uppgraderat från Ubuntu 16 till Ubuntu 18. Massor av saker har ändrats, eller helt slutat fungera. Allt möjligt från hur psuedo-terminaler skapas, till fel-koder i enskilda program (mount m.fl.) har ändrats.
Då de flesta appar som jag utvecklat är beroende av operativ-systemet för att fungera, har jag behövt uppdatera mina appar så att de fungerar i Ubuntu 18. Jag har nu fixat de flesta problemen, men en del går inte att fixa. Lösningen är då att fortsätta köra Ubuntu-16, fast i en virtuell server inuti Ubuntu-18.

Öppen källkod ♥

Det fina med ekosystemet runt Linux är att nästan all programvara är "öppen källkod".
Om man hitter en bug, eller önskar en ny funktion, så är det fritt fram att fixa det själv!

Anledningen till att jag är tvungen att fortsätta köra en virtuell server med Ubuntu 16 är att drivrutinerna till mitt "smarta hem" system, inte fungerar i Ubuntu 18! Källkoden till drivrutinerna är "stängd" (ej öppen) kod.
Skulle källkoden ha varit öppen så skulle någon vid det här laget troligtvis fått den att fungera även i Ubuntu 18.

Linux distributioner

Det finns flera distributioner av Linux, och Ubuntu är en av dessa.
Linux är kärnan, och distributionen utgör alla de program och bibliotek som bildar operativsystemet.

Det som är bra med att använda en distribution så som Ubuntu, är att det finns färdiga program-paket att installera, så man slipper kompilera dem själv. Det är även super-enkelt att uppgradera dessa program, då de som tillhandahåller distributionen alltid ser till att de fungerar, och har de senaste säkerhets-uppdateringarna!
Har man dock special-lösningar som inte tillhandahålls av distributionen händer det dock ofta att man måste gå in och fixa saker själv.
Men kör man bara program installerat från distributionens paket är Ubuntu mycket stabilt.

Programvaru-bibliotek

Programvaru-bibliotek är källkod som program har gemensamt. I stället för att skriva om ofta förekommande funktioner i varje nytt program, kan man i stället skapa ett så kallad bibliotek eller en modul, som sedan kan importeras i andra program.

Förutom säkerhetsuppdateringar och vissa andra uppdateringar så fryser Ubuntu programvaru-biblioteken, vilket också betyder att de flesta program även blir fast i en gammal version. Ubuntu kan ligga flera år efter senaste uppdateringen. Det är ibland irriterande att inte ha tillgång till de senaste funktionerna.
Så jag har även sett över möjligheterna att byta distribution.
Har kikat på Arch Linux som kör med "rullande" uppdateringar, dvs. allt uppgraderas, och man har hela tiden den nyaste versionen av alla program-paket. Nackdelen är dock att det inte blir lika stabilt. Man vill inte gå till jobbet och ha massor att göra, för att sedan behöva mixtra med operativ-systemet bara för att kunna sätta igång att jobba.
Jag kör nu Arch Linux på prov i en virtuell server, för att se hur mycket problem det blir ... Har nu kört Arch Linux i ca en månad, mycket har uppdaterats, men inget har slutat fungera än så länge ... 😛

Static linking

En lösning för att slippa problemen med olika versioner av programvaru-bibliotek och moduler är att inkludera alla bibliotek i varje program. Detta kallas på engelska "static linking".
Nackdelen är att många program blir mycket stora, vissa upp till flera hundra MB. Då skulle det bara få plats 20-30 st program på en billig dator som bara har en 32GB SSD-disk. ³

Även om man länkar samman alla bibliotek tillsammans med programmet så är programmet fortfarande beroende av kärnan (kernel) i operativ-systemet. Så problemet med att få ett program att fungera i olika platformar och versioner är ingen enkel nöt att knäcka.

Fotnoter

Mercurial vs Git

Git och Mercurial fungerar ungefär på samma sätt, men jag tycker bättre om Mercurial för att det är lättare och använda. Och för flera år sedan när jag vägde för och nackdelarna mellan Git och Mercurial fungerade inte Git fullt ut i Windows, som då var mitt dåvarande operativsystem.
Det känns onödigt att byta till Git nu när jag lärt mig Mercurial. Och med hjälp av hg-git kan jag arbeta tillsammans med de som använder Git!
Tack vare Github är Git mer populärt än Mercurial, då Github endast har stöd för Git.

FreeBSD

Jag använder operativsystemet Linux på alla servrar förutom en server som jag kör free-BSD på, utifall det skulle bli något problem med Linux/Ubuntu. Skulle det till exempel upptäckas ett säkerhetshål i Linux/Ubuntu, så skulle det förhoppningsvis inte påverka BSD-servern.

Jag kör även dual boot till Windows 10 på min arbetsstation, eftersom jag då och då kollar så att mina appar även fungerar i Windows.
Jag hade även en tanke att kunna spela vissa spel som inte stöds på Linux. Men jag har numer mycket liten dator-tid utöver på arbetstimmarna, så det blir tyvärr inte så mycket spelande.

SSD-diskar

Om man bortser från de billigaste datorerna och smarta telefoner, har dock moderna datorer normalt över en "TerraByte" (TB) och mer i lagringskapacitet. Och då får det plats tusentals program, även om biblioteken är statiskt länkade.


Skrivet av 11:e April, 2019.


Följ mig via RSS:   RSS https://zäta.com/rss.xml (ange adressen i din feed-läsare)